package com.ljy.my_study.leetcode.搜索插入位置;

/**
 * @author lijunying
 * @date 2020/7/17 9:48
 */
public class TestMain {

//    给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。
//
//    你可以假设数组中无重复元素。
//
//    示例 1:
//
//    输入: [1,3,5,6], 5
//    输出: 2
//    示例 2:
//
//    输入: [1,3,5,6], 2
//    输出: 1
//    示例 3:
//
//    输入: [1,3,5,6], 7
//    输出: 4
//    示例 4:
//
//    输入: [1,3,5,6], 0
//    输出: 0

    public static void main(String[] args) {
        int[] nums=new int[]{1,3,5,6,7};
        System.out.println(new TestMain().searchInsert(nums,5));
        System.out.println(new TestMain().searchInsert(nums,2));
        System.out.println(new TestMain().searchInsert(nums,7));
        System.out.println(new TestMain().searchInsert(nums,0));
    }

    public int searchInsert(int[] nums, int target) {
        if(target>nums[nums.length-1]){
            return nums.length;
        }
        int start=0;
        int end=nums.length-1;
        while(true){
            int mid=(start+end)/2;
            if(target==nums[mid]){
                return mid;
            }
            if(start==end||start+1==end){
                return start+ (target>nums[start]?1:0);
            }
            if(target>nums[mid]){
                start=mid;
            }else if(target<nums[mid]){
                end=mid;
            }
        }
    }
}
